package com.yonyou.cyxdms.basedata.service.service.region;

import com.yonyou.cyxdms.basedata.client.domains.vo.RegionVO;
import com.yonyou.cyxdms.basedata.client.dto.RegionConditionDTO;
import com.yonyou.cyxdms.basedata.service.entity.region.RegionPO;
import com.yonyou.cyxdms.basedata.service.vo.region.AllRegionVO;
import com.yonyou.cyxdms.basedata.service.vo.region.SpAllCityInfoVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 地区表 服务类
 * </p>
 *
 * @author renwd
 * @since 2018-12-19
 */
public interface RegionService {

    /**
     * 查询所有省份
     *
     * @param
     * @return java.util.List<com.yonyou.cyxdms.basedata.service.entity.region.RegionPO>
     * @author renwd
     * @since 2018/12/19
     */
    List<RegionPO> listAllProvice();

    /**
     * 根据省id查询市信息
     *
     * @param provinceId 省id
     * @return java.util.List<com.yonyou.cyxdms.basedata.service.entity.region.RegionPO>
     * @author renwd
     * @since 2018/12/19
     */
    List<RegionPO> listDataById(Long provinceId);

    /**
     * 查询所有省市区县数据
     *
     * @param
     * @return java.util.List<java.util.Map < java.lang.String , java.lang.Object>>
     * @author renwd
     * @since 2018/12/27
     */
    List<AllRegionVO> listAllRegionData();

    /**
     * 查询所有省市区县数据
     *
     * @param
     * @return java.util.List<com.yonyou.cyxdms.basedata.service.vo.region.RegionVO>
     * @author renwd
     * @since 2019/7/12
     */
    List<RegionVO> listAllData();

    /**
     * 根据type查询省市区
     *
     * @param regionCode
     * @return java.util.List<com.yonyou.cyxdms.basedata.service.vo.region.RegionVO>
     * @author renwd
     * @since 2019/7/12
     */
    List<RegionVO> listAllDataByType(String regionCode);
/** ---------------------------以下是车营销迁移过来的---------------------------*/
    /**
     * 根据关键字检索城市列表
     *
     * @param forWord
     * @return
     */
    Map<String, Object> cityInfo(String forWord);

    Map<String,Long>getRegion(String provinceName, String cityName);

    /**
     * 根据省市区ID查询对应信息
     *
     * @param:
     * @return:
     * @auther: tanjie
     * @since: 2019/10/17
     */
    List<RegionVO> getProvinceRelatedData(List ids);

    /**
     * 通用根据城市名称查询省市区ID列表
     *
     * @param regionConditionDTO
     * @return java.util.List<java.lang.Long>
     * @author dengqiang
     * @since 2019/10/31
     */
    List<Long> getRegionIdList(RegionConditionDTO regionConditionDTO);

    /**
     * 根据名称获取对应ID
     *
     * @param:
     * @return:
     * @auther: tanjie
     * @since: 2019/11/4
     */
    RegionVO mappingRegionName(Integer regionType, String regionName, String appId, Long parentId);

    RegionVO getRegionById(Long id);

    RegionVO getRegionByCode(String code, String appId);

    List<RegionVO> getAllRegion(String appid);

    /**
     * 前端定置化接口
     *
     * @param
     * @return com.yonyou.cyxdms.basedata.service.vo.region.SpAllCityInfoVO
     * @author houkh
     * @since 2019/12/2
     */
    SpAllCityInfoVO spCityInfo();

    List<RegionVO> listAllDataByAppId(String appId);
}
